#include <iostream>
#include <algorithm>
using namespace std;

const int N = 100010;
int n, k;
int robot[N];

bool check(int step) {
    int is_clear = 0;
    for (int i = 0; i < k; ++i) {
        if (robot[i] - is_clear <= step) {
            if (robot[i] <= is_clear) {
                // 这个地方为什么-1， 因为让时间为（扫过的步数-1）/2的话你所在的位置一定要扫 ，因为你要回来
                is_clear = robot[i] + step - 1;
            } else {
                is_clear += step;
            }
        } else {
            return false;
        }
    }
    return is_clear >= n;
}

int main() {

    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    cin >> n >> k;

    for (int i = 0; i < k; ++i) {
        cin >> robot[i];
    }

    sort(robot, robot + k);

    int l = 0, r = n;
    while (l < r) {
        int mid = l + r >> 1;
        if (check(mid)) {
            r = mid;
        } else {
            l = mid + 1;
        }
    }
    // 为什么是l，可以画图推一推
    cout << (l - 1) * 2;
    return 0;
}